package com.example.demo.controller;

import com.example.demo.service.BedroomService;
import com.example.demo.service.CanteenService;
import com.example.demo.service.DrawingService;
import com.example.demo.service.FacadeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;

@RestController
public class FacadeController {
    /**
     * 门面模式示例开发*/

    /**
     * 正常模式开发：
     *   若是我们一进家里就像把灯全部打开，正常逻辑是逐个开启*/
    @Autowired
    private DrawingService drawingService;
    @Autowired
    private BedroomService bedroomService;
    @Autowired
    private CanteenService canteenService;

    @PostConstruct
    public void onAll() {
        // 这样是需要我们逐个去操作的，比较复杂
        // 我们可以使用门面模式的开发思想进行开发
        drawingService.onLight();
        bedroomService.onLight();
        canteenService.onLight();
    }

    /**
     * 门面模式开发：
     *   使用更高一层接口进行使用
     *   这种方式只需要我们使用封装后的高级接口即可，无需再去关注子接口如何使用
     *   让其使用成本更低，使用起来更简单，这就是门面模式的目的*/
    @Autowired
    private FacadeService facadeService;

    @PostConstruct
    public void onAllFacade() {
        facadeService.turnOnAllLights();
    }
}
